package datastructure.list;

/**
 * DESCRIPTION:
 * Author: ammar
 * Date:   2021/12/9
 * Time:   下午12:47
 */
public interface List<E> {
    static final int ELEMENT_NOT_FOUND = -1;

    /**
     * 元素数量
     *
     * @return
     */
    int size();

    void clear();

    /**
     * 是否为空
     *
     * @return
     */
    boolean isEmpty();
    /**
     * 是否包含某个元素
     *
     * @param e
     * @return
     */
    boolean contains(E e);

    /**
     * 添加元素到尾部
     *
     * @param e
     */
    void add(E e);

    /**
     * 在 index 位置插入一个元素
     *
     * @param index
     * @param e
     */
    void add(int index, E e);

    /**
     * 获取 index 位置的元素
     *
     * @param index
     * @return
     */
    E get(int index);

    /**
     * 设置 index 位置的元素
     *
     * @param index
     * @param e
     */
    void set(int index, E e);

    /**
     * 删除 index 位置的元素
     *
     * @return 返回删除的元素
     */
    E remove(int index);

    /**
     * 查看元素的索引
     *
     * @param e
     * @return
     */
    int indexOf(E e);
}
